Listin Gambas2

Création d'un programme en Gambas2 : un répertoire téléphonique pas à pas

Origine : http://listingambas.blogspot.com/2011/06/anexo-4-empaquetadodesempaquetado-de.html

Annexe 4 : Empaquetage / Dépaquetage de données

"Houston, Houston, nous avons un problème"
Comme nous le disions à l'époque de la sauvegarde des données, seuls les chemins des images sont enregistrés, pas l'image elle-même (ainsi, seuls les miniatures sont stockées dans " ~ / Listin / mini " ).
Normalement c'est efficace, mais ...Que faire si nous avons changé d'ordinateur?
Que faire si les images «grand format» sont sur un disque dur externe?Peut-on faire une copie de sécurité de toutes les données?



Eh bien, pour résoudre ces problèmes,  nous faisons les choses suivantes :
    • Créer et copier le dossier " ~ / Listin / photos ", toutes les photos à leur taille d'origine.
    • Changer les chemins des photos et copier les données dans un  dossier que nous appellerons " ~ / Listin / data "
    • créer une «ListeGenerale.lis" qui contiendra toutes les données accessibles des dossiers " ~ / Listin"
Pour cela, dans le formulaire Fmain nous allons créer une nouvelle option du menu qui s'appellera "Créer Liste générale "

Liste générale
menu liste générale


Avec le code suivant:
PUBLIC SUB ListeGenerale_Click()
importer.complet()
END


Maintenant, dans le module importer, créons la procédure complet()


SUB complet()
'définition des variables locales
DIM a AS Integer
DIM destination AS String
DIM lignes AS String
DIM codefinligne AS String
DIM PhotoNouveauDossier AS NEW String[]


IF Exist("~/listin/") THEN
' Le répertoire existe , pas besoin de le créer
ELSE
'Le répertoire n'existe pas, le créer...
MKDIR "~/listin/"
ENDIF

'Créer et copier dans un dossier "~/listin/photos", toutes les photos avec leur taille d'origine
IF Exist("~/listin/photos") THEN
'Le répertoire existe , pas besoin de le créer
ELSE
'Le répertoire n'existe pas, le créer...
MKDIR "~/listin/photos"
ENDIF
'début de copie de toutes les photos ...
FOR a = 0 TO var.dni.COUNT - 1
'commande de copie en console 
IF Exist("~/listin/photos/" & File.NAME(var.photo[a])) THEN
'elle existe, pas de copie
ELSE
COPY var.photo[a] TO "~/listin/photos/" & File.NAME(var.photo[a])
ENDIF
NEXT
'modifier les répertoires des photos et copier les données dans un dossier qu'on appelle “~/listin/phtos”
PhotoNouveauDossier.resize.Resize(var.dni.COUNT)
FOR a = 0 TO var.dni.COUNT - 1
PhotoNouveauDossier[a] = "~/listin/photos/" & File.Name(var.photo[a])
NEXT
'créer un fichier “ListeGenerale.lis”, qui contiendra toutes les données accessibles du contenu du dossier “~/listin”
destination = "~/listin/ListeGenerale.lis"
codigofinline = "|"
lignes = "v0.0.1" & codefinligne 'information version
lignes &= "listin.20100718" & codefinligne ' programme qui a créé le fichier
lignes &= var.id.count & codefinligne 'nombre d'enregistrements existants
FOR a = 0 TO var.id.COUNT - 1
    lignes &= var.id[a] & codefinligne
    lignes &= var.dni[a] & codefinligne
    lignes &= var.nom[a] & codefinligne
    lignes &= var.prenoms[a] & codefinligne
    lignes &= var.entreprise[a] & codefinligne
    lignes &= var.poste[a] & codefinligne
    lignes &= var.tel_entreprise[a] & codefinligne
    lignes &= var.tel_perso[a] & codefinligne
    lignes &= var.fax[a] & codefinligne
    lignes &= var.mobile_entreprise[a] & codefinligne
    lignes &= var.mobile_perso[a] & codefinligne
    lignes &= var.page[a] & codefinligne


'ici on met le nouveau répertoire des photos
lignes &= PhotoNouveauDossier[a] & codefinligne
'remplacement du chemin de la photo d'origine par celui de la nouvelle
var.photo[a] = PhotoNouveauDossier[a]
   
lignes &= var.adresse[a] & codefinligne
    lignes &= var.commentaires[a] & codefinligne
    lignes &= var.date_donnees[a] & codefinligne
    lignes &= var.mail[a] & codefinligne

NEXT
File.Save (destination, lignes)
'fin de processus
END


Maintenant toutes les informations (les images, les vignettes, les données) sont dans le répertoire  "~ / Listin / "( user.home & "/ Listin." pourrait être copié sur un autre ordinateur dans ce répertoire, et collé dans votre user.home , rendant l'information complètement accessible.